Verification of Local-First Software
Verification of local-first software (and distributed software in general) is challenging because it is insufficient to only reason about the local behaviour of a program. Instead, we have to account for operations that can happen concurrently on multiple devices. Existing approaches employ advanced type systems, deductive program verification, model checking or combinations thereof.
In this topic, you will explore the current state of verification approaches in the local first-domain (seminar) or implement your own/extend existing ones (project).
- LoRe: A Programming Model for Verifiably Safe Local-first Software
- Pretend synchrony: synchronous verification of asynchronous distributed programs
- Sound sequentialization for concurrent program verification
- Dynamic Partial Order Reduction for Checking Correctness against Transaction Isolation Levels
- AMC: Towards Trustworthy and Explorable CRDT Applications with the Automerge Model Checker
- Disciplined Inconsistency with Consistency Types